package com.example.userwallet.controller;


import com.example.userwallet.entity.Account;
import com.example.userwallet.entity.OrderItems;
import com.example.userwallet.service.OrderItemsService;
import com.example.userwallet.util.JsonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;

/**
 * <p>
 * 交易详情表 前端控制器
 * </p>
 *
 * @author lyl
 * @since 2023-03-15
 */
@RestController
@RequestMapping("/userwallet/orderItems")
@CrossOrigin
public class OrderItemsController {

    @Autowired
    OrderItemsService orderItemsService;

    /**
     * 用户消费100元的接口
     * @param orderItems 包括用户账号userAccount
     *                   消费金额amount
     *                   商户账号merchantAccount
     *                   可以选择对应商家账号对应的银行账户进行转账
     *
     * @return  结果
     */
    @PostMapping("/consume")
    public JsonUtil AccConsume(@RequestBody OrderItems orderItems){
        return orderItemsService.AccConsume(orderItems.getUserAccount(), orderItems.getAmount(), orderItems.getMerchantAccount());
    }

    /**
     * 用户退款20元接口
     * 包括用户账号amount
     *                   消费金额amount
     *                   商户账号merchantAccount
     *                   可以选择对应商家账号对应的银行账户进行退款
     * @return  结果
     */
    @PostMapping("/refund")
    public JsonUtil AccRefund(@RequestBody OrderItems orderItems){
        return orderItemsService.AccRefund(orderItems.getUserAccount(), orderItems.getAmount(), orderItems.getMerchantAccount());
    }


    /**
     *  查询用户钱包金额变动明细的接口
     *  此接口可以查询账户入账和出账
     *  交易详情表中分出了入账和出账两张表用来区别出入账
     *  当然也可以不分表，在详情表中设置状态来表示出入账情况
     *  本次采用了分表，考虑到会涉及到的业务会比较复杂，可能会有其他接口接入
     *
     * @param account 用户账号 本次查询的是出入账全部数据，根据状态码来判断出入情况
     * @return 查询结果
     */
    @PostMapping("/detailed")
    public JsonUtil accountDetailed(@RequestBody Account account){
        return orderItemsService.accountDetailed(account.getUserAccount());
    }

}

